package com.itheima;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.function.Consumer;

/**
 * 2025/5/19 10:51
 * 演示ArrayList的用法
 * <p>
 * <p>
 * 1. 构造函数
 * ---1. ArrayList()
 * <p>
 * <p>
 * <p>
 * 2. 成员方法
 * ---1. add(Object obj)
 * ---2. add(int index,Object obj)
 * ---3. remove(int index)
 * ---4. get(int index)
 * ---5. set(int index,Object obj)
 * ---6. size()
 * ---7. clear()
 * ---8. contains(Object obj)
 * ---9. 获取迭代器
 */
public class ArrayListDemo {
    public static void main(String[] args) {

        //1. 创建ArrayList对象
        //底层赋值了一个空数组
        ArrayList<String> list = new ArrayList<String>();
        //2. 往ArrayList集合中添加数据
        list.add("zhangsan11");//添加一个数据，在数组的尾部
        list.add(0, "lisi");//添加一个数据，在数组的指定位置
        //获取数据
        String s = list.get(1);
        System.out.println(s);
        //修改数据
        list.set(0, "wangwu");
        list.remove(1);

        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
        list.add("zhaoliu");
        list.add("zhangsan");
        list.add("zhangsan");

        System.out.println(list);
        System.out.println("----------------------集合的遍历方法-------------------------");
        //1. for循环的形式
        for (int i = 0; i < list.size(); i++) {
            String obj = list.get(i);
            System.out.println(obj);
        }
        System.out.println("----------------------集合的遍历方法2-------------------------");
        //2. 增强for循环的形式
        for (String obj : list) {
            System.out.println(obj);
        }
        //3. 迭代器的形式
        System.out.println("----------------------集合的遍历方法3-------------------------");
        //获取集合的迭代器对象
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            System.out.println(next);
        }
        //4. Lambda表达式的方式
        System.out.println("----------------------集合的遍历方法4-------------------------");
        //Lambda表达式本质就是一个函数。
//        Consumer<String> consumer =;
//        list.forEach( str-> System.out.println(str));
        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });

        list.forEach( name -> System.out.println(name));


        list.forEach(System.out::println);


    }

}
